home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / rex.lha / rex / test / modula.m < prev    next >
Encoding:
Text File  |  1992-08-18  |  3.7 KB  |  116 lines

  1. GLOBAL    {
  2.    VAR NestingLevel    : CARDINAL;
  3.  
  4.    PROCEDURE ErrorAttribute (Token: CARDINAL; VAR Attribute: tScanAttribute);
  5.       BEGIN
  6.       END ErrorAttribute;
  7. }
  8.  
  9. BEGIN    { NestingLevel := 0; }
  10.  
  11. DEFAULT    {
  12.    IO.WriteI (IO.StdOutput, Attribute.Position.Line, 0);
  13.    IO.WriteS (IO.StdOutput, ", ");
  14.    IO.WriteI (IO.StdOutput, Attribute.Position.Column, 0);
  15.    IO.WriteS (IO.StdOutput, ": illegal character: ");
  16.    yyEcho;
  17.    IO.WriteNl (IO.StdOutput);
  18. }
  19.  
  20. EOF     { IF yyStartState = Comment THEN (* Error ("unclosed comment"); *) END; }
  21.  
  22. DEFINE
  23.  
  24.    digit    = {0-9}        .
  25.    letter    = {a-z A-Z}    .
  26.    CmtCh    = - {*(\t\n}    .
  27.  
  28. START    Comment
  29.  
  30. RULES
  31.  
  32. #STD, Comment# "(*"     :- {INC (NestingLevel); yyStart (Comment);}
  33. #Comment#  "*)"        :- {DEC (NestingLevel); IF NestingLevel = 0 THEN yyStart (STD); END;}
  34. #Comment#  "(" | "*" | CmtCh + :- {}
  35.  
  36. #STD# digit +        ,
  37. #STD# digit + / ".."       : {RETURN 1;}
  38. #STD# {0-7} + B            : {RETURN 2;}
  39. #STD# {0-7} + C            : {RETURN 3;}
  40. #STD# digit {0-9 A-F} * H : {RETURN 4;}
  41. #STD# digit + "." digit * (E {+\-} ? digit +) ?    : {RETURN 5;}
  42.  
  43. #STD# ' - {\n'} * '    |
  44.       \" - {\n"} * \"     : {RETURN 6;}
  45.  
  46. #STD# "#"                  : {RETURN 7;}
  47. #STD# "&"                  : {RETURN 8;}
  48. #STD# "("                  : {RETURN 9;}
  49. #STD# ")"                  : {RETURN 10;}
  50. #STD# "*"                  : {RETURN 11;}
  51. #STD# "+"                  : {RETURN 12;}
  52. #STD# ","                  : {RETURN 13;}
  53. #STD# "-"                  : {RETURN 14;}
  54. #STD# "."                  : {RETURN 15;}
  55. #STD# ".."                 : {RETURN 16;}
  56. #STD# "/"                  : {RETURN 17;}
  57. #STD# ":"                  : {RETURN 18;}
  58. #STD# ":="                 : {RETURN 19;}
  59. #STD# ";"                  : {RETURN 20;}
  60. #STD# "<"                  : {RETURN 21;}
  61. #STD# "<="                 : {RETURN 22;}
  62. #STD# "<>"                 : {RETURN 23;}
  63. #STD# "="                  : {RETURN 24;}
  64. #STD# ">"                  : {RETURN 25;}
  65. #STD# ">="                 : {RETURN 26;}
  66. #STD# "["                  : {RETURN 27;}
  67. #STD# "]"                  : {RETURN 28;}
  68. #STD# "^"                  : {RETURN 29;}
  69. #STD# "{"                  : {RETURN 30;}
  70. #STD# "|"                  : {RETURN 31;}
  71. #STD# "}"                  : {RETURN 32;}
  72. #STD# "~"                  : {RETURN 33;}
  73.  
  74. #STD# AND                  : {RETURN 34;}
  75. #STD# ARRAY                : {RETURN 35;}
  76. #STD# BEGIN               : {RETURN 36;}
  77. #STD# BY                   : {RETURN 37;}
  78. #STD# CASE                 : {RETURN 38;}
  79. #STD# CONST                : {RETURN 39;}
  80. #STD# DEFINITION           : {RETURN 40;}
  81. #STD# DIV                  : {RETURN 41;}
  82. #STD# DO                   : {RETURN 42;}
  83. #STD# ELSE                 : {RETURN 43;}
  84. #STD# ELSIF                : {RETURN 44;}
  85. #STD# END                  : {RETURN 45;}
  86. #STD# EXIT                 : {RETURN 46;}
  87. #STD# EXPORT              : {RETURN 47;}
  88. #STD# FOR                  : {RETURN 48;}
  89. #STD# FROM                 : {RETURN 49;}
  90. #STD# IF                   : {RETURN 50;}
  91. #STD# IMPLEMENTATION       : {RETURN 51;}
  92. #STD# IMPORT               : {RETURN 52;}
  93. #STD# IN                   : {RETURN 53;}
  94. #STD# LOOP                 : {RETURN 54;}
  95. #STD# MOD                  : {RETURN 55;}
  96. #STD# MODULE               : {RETURN 56;}
  97. #STD# \NOT              : {RETURN 57;}
  98. #STD# OF                   : {RETURN 58;}
  99. #STD# OR                   : {RETURN 59;}
  100. #STD# POINTER              : {RETURN 60;}
  101. #STD# PROCEDURE            : {RETURN 61;}
  102. #STD# QUALIFIED            : {RETURN 62;}
  103. #STD# RECORD               : {RETURN 63;}
  104. #STD# REPEAT               : {RETURN 64;}
  105. #STD# RETURN               : {RETURN 65;}
  106. #STD# SET                  : {RETURN 66;}
  107. #STD# THEN                 : {RETURN 67;}
  108. #STD# TO                   : {RETURN 68;}
  109. #STD# TYPE                 : {RETURN 69;}
  110. #STD# UNTIL                : {RETURN 70;}
  111. #STD# VAR                  : {RETURN 71;}
  112. #STD# WHILE                : {RETURN 72;}
  113. #STD# WITH                 : {RETURN 73;}
  114.  
  115. #STD# letter (letter | digit) *    : {RETURN 74;}
  116.